1. Field
The invention relates generally to computer software for controlling hardware and software systems external to the computer. More specifically, the invention relates to a process enabling a computer user to create customized programs for monitoring, automating, testing, and controlling hardware and software systems external to the computer.
2. Background
Computerized control systems have been around since the 1960s. In the last two decades, the use and application of computer systems for automation and control have become commonplace in just about every industry, including aviation, banking, chemical processing, communications, construction, data processing, defense, engineering, entertainment, finance, investment, manufacturing, medicine, power generation, real estate, security, and transportation, to name a few. In developed nations today, computerized controls are seemingly omnipresent, having permeated nearly all segments of consumer-grade markets. Up-to-date microprocessor-based control systems can be found in common household products such as appliances, cameras, clocks, cookware, pianos, printers, stereos, thermostats, telephones, televisions, toys, and other home electronics and consumer goods.
Historically, the application of computerized control to a particular industrial process, hardware system, or consumer appliance has required the development of specialized software. A computer programmer or software engineer, or a team of software developers is typically employed to translate plain-language criteria as set forth, for example, in a software requirements specification, into a source code language. The source code may then be compiled into an object code that is executable by a computer processor. Depending on the complexity of the requirements, the operating system platform, the source code language selected, and the sophistication of the programmers, the customization of software can be a prohibitively expensive and time consuming part of the overall product development process.
Aggressive budgetary and scheduling demands often compel software developers to cut corners during development, such that it is now standard procedure for the developer to release unperfected software to the consuming public, knowing in advance that an indefinite number of upgrades may be periodically released to address any unresolved problems. As a result, the initial release of many customized software projects is an imperfect, user-unfriendly product to which the purchaser must continue to devote resources, for example, to acquire version upgrades and corresponding training.
From the developer's perspective, maintaining version control of software products adds another level of complexity to the development process. Electronic copies of software code under development are easily duplicated and disseminated, and can quickly lead to loss of configuration control. Where software development is subject to strict quality assurance requirements, such as in defense, aerospace, nuclear, and various other manufacturing industries, the ability to administratively control the release status of a version of software is, in and of itself, a critical component of the quality assurance program. For example, software used to automate manufacturing or testing procedures must be secure, archived, retrievable, and repeatable to ensure consistency and acceptable quality control in the manufacturing or testing process. Records of processes run, or of test results obtained must be traceable to the particular version of software that controlled the automation in order to troubleshoot, optimize, and properly audit the process. Without having such controls firmly in place, a development firm risks the release of unauthorized versions, corruption of released versions, or simultaneously release of different code bearing identical version numbers. Inadequate version control can lead to poor quality control, loss of accreditation of a corporate quality assurance program, and ultimately disqualification of a supplier.
As applications for computerized controls continue to expand throughout industrial and consumer markets, the need for software customization in those markets is growing beyond the availability of skilled labor to fulfill the need. What is needed is a simpler way to translate plain-language software requirements into computer executable controls that also provides for efficient administrative version control.